package com.tedu.api.io;

import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.logging.Filter;

/**
 *listFiles(接口：Filter)    重载
 * 作用：按照”指定规则“获取对应文件/文件夹
 * Filter接口---专门给listFiles方法提供：过滤文件或者文件【制定规则】
 * accept（）每个file的文件判断，拿到【具体逻辑】的文件夹
 *
 * 需求：获取 API 项目下 所有子项【文件和文件夹】，获取src文件
 * 指定规则：验证s开通假设src
 * 作业2：FileFilter接口按照  匿名内部类 方式 实现 功能如上需求！
 * 接口： FileFilter  ff=new FileFilter() { accept() }
 */

public class FilterAPI {
    public static void main(String[] args) {
//1.创建File文件类：获取当前API 文件夹  路径：./
        File file = new File("." + File.separator + "API");
        //匿名内部类：替换子类继承FileFilter
        // System.out.println(file.getCanonicalPath());
        //4.创建Filter接口对象---无法直接创建：实现类--实现--接口【创建】
       /* FileFilter my=new FileFilter() {
            public boolean accept(File pathname) {
                //添加规则：文件或者文件是  s  开头--过滤
                //①获取所有的文件夹名字
                String name=pathname.getName(); //文件夹：src 字符串
                //②过滤以 s  开头的文件
                //字符串：startWith（）  返回值boolean
                //作用：验证字符串是不是匹配字母，如果匹配：true，反之不匹配
                //③打印过滤出现字符串
                System.out.println("过滤出来文件夹的名字是："+name);
                return pathname.getName.startsWith("s");
          }
        };*/
        //2.获取文件夹下的所有“子项：文件夹下包括所有文件和文件夹“
        File[] subs = file.listFiles(pathname -> {
            return pathname.getName().startsWith("s");
        });
        //3.打印子项下所有名字  增强for
        /*for(int i=0;i<subs.length;i++){//i  下标  从0开始
            System.out.println("所有文件和文件名："+subs[i].getName());
        }*/

        //增强for for(接受类型 f:)
        for (File f:new File("."+File.separator+"API").listFiles((pathname)->{return pathname.getName().startsWith("s");})){
            System.out.println("遍历后过滤完成："+f);
        }
    }
}